﻿using System;
using System.Data;
using System.Linq;
using System.Windows.Forms;

namespace Siav
{
    public partial class frmTransportadoras : Form
    {
        public frmTransportadoras()
        {
            InitializeComponent();
        }
        SiavEntities Entidades = new SiavEntities();
        public void CarregaTransportadoras(string pParametro)
        {
            lstProdutos.Items.Clear();

            var TRansp = (from p in Entidades.Transportadoras
                          where p.NomeRazao.Contains(pParametro) || p.CPFCNPJ.Contains(pParametro) || p.Telefone1.Contains(pParametro) || p.Telefone2.Contains(pParametro)
                          select p).ToList();
            foreach (Transportadoras Pro in TRansp)
            {
                ListViewItem item = new ListViewItem();
                item.Text = Pro.TCodigo.ToString();
                item.SubItems.Add(Pro.NomeRazao);
                item.SubItems.Add(Pro.CPFCNPJ);
                lstProdutos.Items.Add(item);
            }
        }

        private void CarregaEstados()
        {
            var Estados = (from Est in Entidades.UnidadesDaFederacao
                           select Est).ToList();
            cboEstado.DataSource = Estados;
            cboEstado.DisplayMember = "NomeUF";
            cboEstado.ValueMember = "CodigoUF";
        }

        private void CarregaCidades(int pCodigoEstado)
        {
            var TCidades = (from tr in Entidades.MunicipiosIBGE
                            where tr.CodigoUF.Equals(pCodigoEstado)
                            select tr).ToList();
            cboCidade.DataSource = TCidades;
            cboCidade.DisplayMember = "NomeMunicipio";
            cboCidade.ValueMember = "Municipio";
        }

        private void frmTransportadoras_Load(object sender, EventArgs e)
        {
            CarregaTransportadoras(txtFiltroTransp.Text);
            CarregaEstados();
        }

        private void btnSalvar_Click(object sender, EventArgs e)
        {
            if (tCodigo.Text == "")
            {
                Transportadoras TRans = new Transportadoras();
                TRans.NomeRazao = tNomeRazao.Text;
                TRans.CPFCNPJ = tCNPJCPF.Text;
                TRans.IERG = tIE.Text;
                TRans.Logradouro = tLogradouro.Text;
                TRans.Estado = int.Parse(cboEstado.SelectedValue.ToString());
                TRans.Cidade = int.Parse(cboCidade.SelectedValue.ToString());
                TRans.Telefone1 = txtTelefone1.Text;
                TRans.Telefone2 = txtTelefone2.Text;

                Entidades.AddObject("Transportadoras", TRans);
                Entidades.SaveChanges();
                CarregaTransportadoras(txtFiltroTransp.Text);

                LimpaCampos();
                tNomeRazao.Focus();

            }
            else
            {
                int Codigo = int.Parse(tCodigo.Text);
                var TRans = Entidades.Transportadoras.FirstOrDefault(tr => tr.TCodigo.Equals(Codigo));

                TRans.NomeRazao = tNomeRazao.Text;
                TRans.CPFCNPJ = tCNPJCPF.Text;
                TRans.IERG = tIE.Text;
                TRans.Logradouro = tLogradouro.Text;
                TRans.Estado = int.Parse(cboEstado.SelectedValue.ToString());
                TRans.Cidade = int.Parse(cboCidade.SelectedValue.ToString());
                TRans.Telefone1 = txtTelefone1.Text;
                TRans.Telefone2 = txtTelefone2.Text;

                //Entidades.AddObject("Produtos", Prods);
                Entidades.ObjectStateManager.ChangeObjectState(TRans, EntityState.Modified);
                Entidades.SaveChanges();
                CarregaTransportadoras(txtFiltroTransp.Text);

                LimpaCampos();
            }
        }

        public void LimpaCampos()
        {
            Validacoes.LimpaCamposFormulario(Controls);
            txtTelefone1.Text = string.Empty;
            txtTelefone2.Text = string.Empty;
            tNomeRazao.Focus();

        }

        private void lstProdutos_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
        {
            if (e.IsSelected)
            {
                int pcodigo = int.Parse(lstProdutos.SelectedItems[0].Text.ToString());
                var Valor = Entidades.Transportadoras.FirstOrDefault(tr => tr.TCodigo.Equals(pcodigo));
                tCodigo.Text = Valor.TCodigo.ToString();
                tNomeRazao.Text = Valor.NomeRazao;
                tCNPJCPF.Text = Valor.CPFCNPJ;
                tIE.Text = Valor.IERG;
                tLogradouro.Text = Valor.Logradouro;
                cboEstado.SelectedValue = int.Parse(Valor.Estado.ToString());
                cboCidade.SelectedValue = int.Parse(Valor.Cidade.ToString());
                txtTelefone1.Text = Valor.Telefone1;
                txtTelefone2.Text = Valor.Telefone2;
            }
        }

        private void btnNovo_Click(object sender, EventArgs e)
        {
            LimpaCampos();
            cboEstado.SelectedValue = 51;
            cboCidade.SelectedValue = 5103403;
        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {
            if (tCodigo.Text != "")
            {
                int Codigo = int.Parse(tCodigo.Text);
                if (MessageBox.Show("Tem certeza que deseja excluir o registro selecionado?", "Confirmação", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    var Excluir = Entidades.Transportadoras.FirstOrDefault(tr => tr.TCodigo.Equals(Codigo));

                    Entidades.DeleteObject(Excluir);
                    Entidades.SaveChanges();
                    MessageBox.Show("Registro Excluido com sucesso", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    CarregaTransportadoras(txtFiltroTransp.Text);
                    LimpaCampos();
                }
            }
        }

        private void btnSair_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void frmTransportadoras_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.F10:
                    btnSalvar_Click(sender, e);
                    break;
                case Keys.F1:
                    btnNovo_Click(sender, e);
                    break;
                case Keys.Escape:
                    btnSair_Click(sender, e);
                    break;
                case Keys.F12:
                    btnExcluir_Click(sender, e);
                    break;
            }
        }

        private void cboEstado_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (cboEstado.SelectedValue.ToString() != "Siav.UnidadesDaFederacao" || cboEstado.SelectedValue == null)
                {
                    int Estado = int.Parse(cboEstado.SelectedValue.ToString());
                    CarregaCidades(Estado);
                }
            }
            catch
            {

            }
        }

        private void frmTransportadoras_Load_1(object sender, EventArgs e)
        {
            CarregaTransportadoras("");
            CarregaEstados();
        }

        private void tCNPJCPF_Leave(object sender, EventArgs e)
        {
            if (tCNPJCPF.TextLength == 11)
            {
                var vValidacao = Validacoes.ValidarDvCpf(tCNPJCPF.Text);
                if (vValidacao == false)
                {
                    MessageBox.Show("Erro, CPF inválido", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            if (tCNPJCPF.TextLength == 14)
            {
                var vValidacao = Validacoes.ValidaDvCnpj(tCNPJCPF.Text);
                if (vValidacao == false)
                {
                    MessageBox.Show("Erro, CNPJ inválido", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void txtFiltroTransp_TextChanged(object sender, EventArgs e)
        {
            CarregaTransportadoras(txtFiltroTransp.Text);
        }

    }
}
